package cn.iocoder.an.module.mold.service.drawingno;

import java.util.*;

import cn.iocoder.an.module.mold.utils.ImportRespVO;
import jakarta.validation.*;
import cn.iocoder.an.module.mold.controller.admin.drawingno.vo.*;
import cn.iocoder.an.module.mold.dal.dataobject.drawingno.DrawingNoDO;
import cn.iocoder.an.framework.common.pojo.PageResult;

/**
 * 模具图号 Service 接口
 *
 * @author 超级管理员
 */
public interface DrawingNoService {

    /**
     * 创建模具图号
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createDrawingNo(@Valid DrawingNoSaveReqVO createReqVO);

    /**
     * 更新模具图号
     *
     * @param updateReqVO 更新信息
     */
    void updateDrawingNo(@Valid DrawingNoSaveReqVO updateReqVO);

    /**
     * 删除模具图号
     *
     * @param id 编号
     */
    void deleteDrawingNo(Long id);

    /**
     * 批量删除模具图号
     *
     * @param ids 编号
     */
    void deleteDrawingNoListByIds(List<Long> ids);

    /**
     * 获得模具图号
     *
     * @param id 编号
     * @return 模具图号
     */
    DrawingNoDO getDrawingNo(Long id);

    /**
     * 获得模具图号分页
     *
     * @param pageReqVO 分页查询
     * @return 模具图号分页
     */
    PageResult<DrawingNoDO> getDrawingNoPage(DrawingNoPageReqVO pageReqVO);

    /**
     * 获得所有图号分类列表
     *
     * @return 图号分类列表
     */
    List<DrawingNoDO> getDrawingNoAll();

    /**
     * 模糊搜索模具图号，返回IDS
     *
     * @return 图号Ids
     */
    List<Long> getIdsByDrawingNo(String drawingNo);


    /**
     * 根据图号获取图号对象
     *
     * @return DrawingNoDO 对象
     */
    DrawingNoDO getObByDrawingNo(String drawingNo);


    /**
     * 批量导入图号台账
     *
     * @param iomportDrawingNo 批量导入图号台账
     * @param isUpdateSupport  是否支持更新
     * @return 导入结果
     */
    ImportRespVO importDrawingNoList(List<DrawingNoImportExcelVO> iomportDrawingNo, boolean isUpdateSupport);

}